package top.wshape1.shiziapi.message.service;

import com.baomidou.mybatisplus.extension.service.IService;
import top.wshape1.shiziapi.common.domain.to.ProjectUserIdTo;
import top.wshape1.shiziapi.common.domain.vo.MessageVo;
import top.wshape1.shiziapi.message.domain.MessageUser;

import java.util.List;

/**
 * @author Wshape1
 * @description 针对表【t_message_user】的数据库操作Service
 * @since 2023-09-18 22:09:06
 */
public interface MessageUserService extends IService<MessageUser> {

    /**
     * 已读一个信息
     *
     * @param msgId
     * @param userId
     */
    void read(Long msgId, Long userId);

    /**
     * 、
     * 查询未读信息的数量
     *
     * @param userId
     * @return
     */
    long countUnread(Long userId);

    /**
     * 获取用户的私信消息，非项目邀请消息
     *
     * @param userId
     * @return
     */
    List<MessageVo> getPrivateMsg(Long userId);

    /**
     * 获取用户的邀请消息
     *
     * @param userId
     * @return
     */
    List<MessageVo> getInviteMsg(Long userId);

    /**
     * 发送一个项目邀请消息
     *
     * @param projectId
     * @param projectName
     * @param userId
     * @param userName
     * @param memberId
     */
    void sendInviteMsg(Long projectId, String projectName, Long userId, String userName, Long memberId);

    /**
     * 获取邀请消息的项目ID和邀请人ID
     *
     * @param msgId
     * @return
     */
    ProjectUserIdTo getAndParseId(Long msgId);

    /**
     * 发送一个邀请失败的消息
     * @param projectId
     * @param projectName
     * @param memberId
     * @param memberName
     * @param userId
     */
    void sendRejectMsg(Long projectId, String projectName, Long memberId, String memberName, Long userId);


}
